home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / source.lha / Language / language_test.c < prev    next >
C/C++ Source or Header  |  1992-07-28  |  15KB  |  454 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: language_test.c
  6.  *    Created ..: Thursday 19-Dec-91 20:21:13
  7.  *    Revision .: 1
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    11-Jul-92   Torsten Jürgeleit      now get pointer to console device
  12.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  13.  *
  14.  ****************************************************************************
  15.  *
  16.  *    Test of language support functions
  17.  *
  18.  * $Revision Header ********************************************************/
  19.  
  20.     /* Includes */
  21.  
  22. #include <exec/types.h>
  23. #include <graphics/gfxbase.h>
  24. #include <intuition/intuitionbase.h>
  25. #include <intuition/intuition.h>
  26. #ifdef AZTEC_C
  27. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  28. #endif
  29. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  30. #include "/render/render.h"
  31. #include "/texts/texts.h"
  32. #include "/borders/borders.h"
  33. #include "/gadgets/gadgets.h"
  34. #include "/requester/requester.h"
  35. #include "language.h"
  36.  
  37.     /* Defines */
  38.  
  39. #define WINDOW_WIDTH        600
  40. #define WINDOW_HEIGHT        180
  41. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL)
  42. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  43. #define WINDOW_TITLE        (UBYTE *)" Language test "
  44.  
  45. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  46. #define OPEN_WINDOW_FLAGS    (USHORT)(OPEN_WINDOW_FLAG_CENTER_SCREEN | OPEN_WINDOW_FLAG_RENDER_PENS)
  47.  
  48.     /* Defines for language texts */
  49.  
  50. #define LANGUAGE_ENGLISH    0
  51. #define LANGUAGE_GERMAN        1
  52.  
  53. #define LANGUAGE_TEXT_FILE    "deutsch.language"
  54. #define LANGUAGE_TEXT_ENTRIES    14
  55.  
  56. #define LANGUAGE_TEXT_AUTO_REQUEST    (BYTE *)1
  57. #define LANGUAGE_TEXT_REQUESTER        (BYTE *)2
  58. #define LANGUAGE_TEXT_LANGUAGE        (BYTE *)3
  59. #define LANGUAGE_TEXT_ENGLISH        (BYTE *)4
  60. #define LANGUAGE_TEXT_GERMAN        (BYTE *)5
  61. #define LANGUAGE_TEXT_AUTO_REQ_TITLE    (BYTE *)6
  62. #define LANGUAGE_TEXT_AUTO_REQ_BODY    (BYTE *)7
  63. #define LANGUAGE_TEXT_AUTO_REQ_POS    (BYTE *)8
  64. #define LANGUAGE_TEXT_AUTO_REQ_NEG    (BYTE *)9
  65. #define LANGUAGE_TEXT_REQ_TITLE        (BYTE *)10
  66. #define LANGUAGE_TEXT_REQ_LINE1        (BYTE *)11
  67. #define LANGUAGE_TEXT_REQ_LINE2        (BYTE *)12
  68. #define LANGUAGE_TEXT_REQ_LINE3        (BYTE *)13
  69. #define LANGUAGE_TEXT_REQ_GAD_CONTINUE    (BYTE *)14
  70.  
  71.     /* Globals */
  72.  
  73. struct IntuitionBase  *IntuitionBase;
  74. struct GfxBase        *GfxBase;
  75. struct Library        *DiskfontBase;
  76. struct Library        *LayersBase;
  77. struct Device         *ConsoleDevice;
  78.  
  79.     /* Statics */
  80.  
  81. STATIC struct NewWindow  test_new_window = {
  82.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
  83.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  84. };
  85. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  86.                            FS_NORMAL, FPF_ROMFONT },
  87.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  88.                            FS_NORMAL, FPF_ROMFONT };
  89.     /* Defines for test gadgets */
  90.  
  91. #define TEST1_GADGET_AUTO_REQUEST    0
  92. #define TEST1_GADGET_REQUESTER        1
  93. #define TEST1_GADGET_LANGUAGE        2
  94.  
  95. #define TEST1_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  96. #define TEST1_GADGET1_FLAGS        GADGET_DATA_FLAG_HOTKEY
  97. #define TEST1_GADGET1_LEFT_EDGE        ((WINDOW_WIDTH / 2 - TEST1_GADGET1_WIDTH) / 2)
  98. #define TEST1_GADGET1_TOP_EDGE        ((WINDOW_HEIGHT - TEST1_GADGET1_HEIGHT) / 2)
  99. #define TEST1_GADGET1_WIDTH        ((12 + 2) * 10)
  100. #define TEST1_GADGET1_HEIGHT        19
  101. #define TEST1_GADGET1_TEXT        LANGUAGE_TEXT_AUTO_REQUEST
  102. #define TEST1_GADGET1_TEXT_ATTR        &topaz60_attr
  103.  
  104. #define TEST1_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  105. #define TEST1_GADGET2_FLAGS        GADGET_DATA_FLAG_HOTKEY
  106. #define TEST1_GADGET2_LEFT_EDGE        (WINDOW_WIDTH - (TEST1_GADGET2_WIDTH + TEST1_GADGET1_LEFT_EDGE))
  107. #define TEST1_GADGET2_TOP_EDGE        TEST1_GADGET1_TOP_EDGE
  108. #define TEST1_GADGET2_WIDTH        TEST1_GADGET1_WIDTH
  109. #define TEST1_GADGET2_HEIGHT        TEST1_GADGET1_HEIGHT
  110. #define TEST1_GADGET2_TEXT        LANGUAGE_TEXT_REQUESTER
  111. #define TEST1_GADGET2_TEXT_ATTR        TEST1_GADGET1_TEXT_ATTR
  112.  
  113. #define TEST1_GADGET3_TYPE        GADGET_DATA_TYPE_MX
  114. #define TEST1_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  115. #define TEST1_GADGET3_LEFT_EDGE        ((WINDOW_WIDTH - TEST1_GADGET3_WIDTH) / 2)
  116. #define TEST1_GADGET3_TOP_EDGE        ((WINDOW_HEIGHT - TEST1_GADGET3_HEIGHT) / 2)
  117. #define TEST1_GADGET3_WIDTH        120
  118. #define TEST1_GADGET3_HEIGHT        30
  119. #define TEST1_GADGET3_TEXT        LANGUAGE_TEXT_LANGUAGE
  120. #define TEST1_GADGET3_TEXT_ATTR        &topaz60_attr
  121. #define TEST1_GADGET3_SPACING        2
  122. #define TEST1_GADGET3_ACTIVE        0
  123. #define TEST1_GADGET3_TEXT_ARRAY    &language_array[0]
  124.  
  125. STATIC BYTE *language_array[] = {
  126.     LANGUAGE_TEXT_ENGLISH,
  127.     LANGUAGE_TEXT_GERMAN,
  128.     NULL
  129. };
  130. STATIC struct GadgetData  test1_gadget_data[] = {
  131.    {
  132.     TEST1_GADGET1_TYPE,        /* gd_Type */
  133.     TEST1_GADGET1_FLAGS,        /* gd_Flags */
  134.     TEST1_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  135.     TEST1_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  136.     TEST1_GADGET1_WIDTH,        /* gd_Width */
  137.     TEST1_GADGET1_HEIGHT,        /* gd_Height */
  138.     TEST1_GADGET1_TEXT,        /* *gd_Text */
  139.     TEST1_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  140.     { 0, 0, 0 }
  141.    }, {
  142.     TEST1_GADGET2_TYPE,        /* gd_Type */
  143.     TEST1_GADGET2_FLAGS,        /* gd_Flags */
  144.     TEST1_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  145.     TEST1_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  146.     TEST1_GADGET2_WIDTH,        /* gd_Width */
  147.     TEST1_GADGET2_HEIGHT,        /* gd_Height */
  148.     TEST1_GADGET2_TEXT,        /* *gd_Text */
  149.     TEST1_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  150.     { 0, 0, 0 }
  151.    }, {
  152.     TEST1_GADGET3_TYPE,        /* gd_Type */
  153.     TEST1_GADGET3_FLAGS,        /* gd_Flags */
  154.     TEST1_GADGET3_LEFT_EDGE,    /* gd_LeftEdge */
  155.     TEST1_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  156.     TEST1_GADGET3_WIDTH,        /* gd_Width */
  157.     TEST1_GADGET3_HEIGHT,        /* gd_Height */
  158.     TEST1_GADGET3_TEXT,        /* *gd_Text */
  159.     TEST1_GADGET3_TEXT_ATTR,    /* *gd_TextAttr */
  160.     {
  161.     TEST1_GADGET3_SPACING,        /* gd_MXSpacing */
  162.     TEST1_GADGET3_ACTIVE,        /* gd_MXActiveEntry */
  163.     TEST1_GADGET3_TEXT_ARRAY    /* gd_MXTextArray */
  164.     }
  165.    }, {
  166.     INTUISUP_DATA_END        /* mark end of border data array */
  167.    }
  168. };
  169.     /* Defines for auto request */
  170.  
  171. #define TEST1_AUTO_REQ_TITLE        LANGUAGE_TEXT_AUTO_REQ_TITLE
  172. #define TEST1_AUTO_REQ_BODY_TEXT    LANGUAGE_TEXT_AUTO_REQ_BODY
  173. #define TEST1_AUTO_REQ_POS_TEXT        LANGUAGE_TEXT_AUTO_REQ_POS
  174. #define TEST1_AUTO_REQ_NEG_TEXT        LANGUAGE_TEXT_AUTO_REQ_NEG
  175. #define TEST1_AUTO_REQ_FLAGS        (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_CENTER_MOUSE | AUTO_REQ_FLAG_DRAW_RASTER)
  176.  
  177.     /* Defines for requester */
  178.  
  179. #define TEST2_REQ_WIDTH        200
  180. #define TEST2_REQ_HEIGHT    100
  181. #define TEST2_REQ_FLAGS        (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER_WINDOW | REQ_DATA_FLAG_INNER_WINDOW)
  182. #define TEST2_REQ_TITLE        LANGUAGE_TEXT_REQ_TITLE
  183.  
  184. #define TEST2_TEXT1_TYPE    TEXT_DATA_TYPE_TEXT
  185. #define TEST2_TEXT1_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  186. #define TEST2_TEXT1_LEFT_EDGE    0
  187. #define TEST2_TEXT1_TOP_EDGE    20
  188. #define TEST2_TEXT1_TEXT    LANGUAGE_TEXT_REQ_LINE1
  189. #define TEST2_TEXT1_TEXT_ATTR    &topaz60_attr
  190.  
  191. #define TEST2_TEXT2_TYPE    TEXT_DATA_TYPE_TEXT
  192. #define TEST2_TEXT2_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
  193. #define TEST2_TEXT2_LEFT_EDGE    0
  194. #define TEST2_TEXT2_TOP_EDGE    (TEST2_TEXT1_TOP_EDGE + 10)
  195. #define TEST2_TEXT2_TEXT    LANGUAGE_TEXT_REQ_LINE2
  196. #define TEST2_TEXT2_TEXT_ATTR    &topaz80_attr
  197.  
  198. #define TEST2_TEXT3_TYPE    TEXT_DATA_TYPE_TEXT
  199. #define TEST2_TEXT3_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
  200. #define TEST2_TEXT3_LEFT_EDGE    0
  201. #define TEST2_TEXT3_TOP_EDGE    (TEST2_TEXT2_TOP_EDGE + 10)
  202. #define TEST2_TEXT3_TEXT    LANGUAGE_TEXT_REQ_LINE3
  203. #define TEST2_TEXT3_TEXT_ATTR    &topaz80_attr
  204.  
  205. #define TEST2_BORDER1_TYPE        BORDER_DATA_TYPE_BOX2_OUT
  206. #define TEST2_BORDER1_LEFT_EDGE        20
  207. #define TEST2_BORDER1_TOP_EDGE        10
  208. #define TEST2_BORDER1_WIDTH        (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
  209. #define TEST2_BORDER1_HEIGHT        (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
  210.  
  211. #define TEST2_GADGET_CONTINUE        0
  212.  
  213. #define TEST2_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  214. #define TEST2_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
  215. #define TEST2_GADGET1_LEFT_EDGE        ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
  216. #define TEST2_GADGET1_TOP_EDGE        (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
  217. #define TEST2_GADGET1_WIDTH        ((8 + 2) * 10)
  218. #define TEST2_GADGET1_HEIGHT        19
  219. #define TEST2_GADGET1_TEXT        LANGUAGE_TEXT_REQ_GAD_CONTINUE
  220. #define TEST2_GADGET1_TEXT_ATTR        &topaz60_attr
  221.  
  222.     /* Statics for test borders */
  223.  
  224. STATIC struct TextData  test2_text_data[] = {
  225.    {
  226.     TEST2_TEXT1_TYPE,    /* td_Type */
  227.     TEST2_TEXT1_FLAGS,    /* td_Flags */
  228.     TEST2_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  229.     TEST2_TEXT1_TOP_EDGE,    /* td_TopEdge */
  230.     TEST2_TEXT1_TEXT,    /* *td_Text */
  231.     TEST2_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  232.    }, {
  233.     TEST2_TEXT2_TYPE,    /* td_Type */
  234.     TEST2_TEXT2_FLAGS,    /* td_Flags */
  235.     TEST2_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  236.     TEST2_TEXT2_TOP_EDGE,    /* td_TopEdge */
  237.     TEST2_TEXT2_TEXT,    /* *td_Text */
  238.     TEST2_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  239.    }, {
  240.     TEST2_TEXT3_TYPE,    /* td_Type */
  241.     TEST2_TEXT3_FLAGS,    /* td_Flags */
  242.     TEST2_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  243.     TEST2_TEXT3_TOP_EDGE,    /* td_TopEdge */
  244.     TEST2_TEXT3_TEXT,    /* *td_Text */
  245.     TEST2_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  246.    }, {
  247.     INTUISUP_DATA_END    /* mark end of border data array */
  248.    }
  249. };
  250. STATIC struct BorderData  test2_border_data[] = {
  251.    {
  252.     TEST2_BORDER1_TYPE,        /* bd_Type */
  253.     TEST2_BORDER1_LEFT_EDGE,    /* bd_LeftEdge */
  254.     TEST2_BORDER1_TOP_EDGE,        /* bd_TopEdge */
  255.     TEST2_BORDER1_WIDTH,        /* bd_Width */
  256.     TEST2_BORDER1_HEIGHT        /* bd_Height */
  257.    }, {
  258.     INTUISUP_DATA_END        /* mark end of border data array */
  259.    }
  260. };
  261. STATIC struct GadgetData  test2_gadget_data[] = {
  262.    {
  263.     TEST2_GADGET1_TYPE,        /* gd_Type */
  264.     TEST2_GADGET1_FLAGS,        /* gd_Flags */
  265.     TEST2_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  266.     TEST2_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  267.     TEST2_GADGET1_WIDTH,        /* gd_Width */
  268.     TEST2_GADGET1_HEIGHT,        /* gd_Height */
  269.     TEST2_GADGET1_TEXT,        /* *gd_Text */
  270.     TEST2_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  271.     { 0, 0, 0 }
  272.    }, {
  273.     INTUISUP_DATA_END        /* mark end of border data array */
  274.    }
  275. };
  276. STATIC struct RequesterData  test2_requester_data = {
  277.     0,            /* rd_LeftEdge */
  278.     0,            /* rd_TopEdge */
  279.     TEST2_REQ_WIDTH,    /* rd_Width */
  280.     TEST2_REQ_HEIGHT,    /* rd_Height */
  281.     TEST2_REQ_FLAGS,    /* rd_Flags */
  282.     TEST2_REQ_TITLE,    /* *rd_Title */
  283.     &test2_text_data[0],    /* *rd_Texts */
  284.     &test2_border_data[0],    /* *rd_Borders */
  285.     &test2_gadget_data[0]    /* *rd_Gadgets */
  286. };
  287. STATIC BYTE *english_language_text_array[] = {
  288.     (BYTE *)LANGUAGE_TEXT_ENTRIES,
  289.  
  290.     /* Texts for main display */
  291.     "_Auto Request",
  292.     "_Requester",
  293.     "_Language",
  294.     "English",
  295.     "Deutsch",
  296.  
  297.     /* Texts for auto request */
  298.     " Auto Request ",
  299.     "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4",
  300.     "_Positive",
  301.     "_Negative",
  302.  
  303.     /* Texts for requester */
  304.     " Requester ",
  305.     "Text Line 1",
  306.     "Text Line 2",
  307.     "Text Line 3",
  308.     "_Continue"
  309. };
  310.     /* Prototypes */
  311.  
  312. VOID test_action(struct RenderInfo  *ri, struct Window  *win);
  313.  
  314.     /* Pragmas */
  315.  
  316. #pragma regcall(test_action(a0,a1))
  317.  
  318.     /* Language test */
  319.  
  320.    LONG
  321. main(VOID)
  322. {
  323.    struct IOStdReq    io;
  324.    struct RenderInfo  *ri;
  325.    struct Window      *win;
  326.  
  327.    MWInit((BPTR)NULL, 0L);
  328.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  329.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  330.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  331.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  332.            if (!OpenDevice("console.device", -1L,
  333.                          (struct IORequest *)&io, 0L)) {
  334.           ConsoleDevice = io.io_Device;
  335.           if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  336.              if (win = open_window(ri, &test_new_window,
  337.                                OPEN_WINDOW_FLAGS)) {
  338.             test_action(ri, win);
  339.             close_window(win, FALSE);
  340.              }
  341.              free_render_info(ri);
  342.           }
  343.           CloseDevice((struct IORequest *)&io);
  344.            }
  345.            CloseLibrary(LayersBase);
  346.         }
  347.         CloseLibrary(DiskfontBase);
  348.      }
  349.      CloseLibrary(GfxBase);
  350.       }
  351.       CloseLibrary(IntuitionBase);
  352.    }
  353.    MWTerm();
  354.    return(0L);
  355. }
  356.     /* Perform IDCMP action */
  357.  
  358.    VOID
  359. test_action(struct RenderInfo  *ri, struct Window  *win)
  360. {
  361.    USHORT language = LANGUAGE_ENGLISH;
  362.    BOOL   keepon3 = TRUE;
  363.  
  364.    do {
  365.       struct GadgetList  *gl;
  366.       BYTE   **language_text_array;
  367.       USHORT new_language;
  368.  
  369.       /* Build language text array */
  370.       switch (language) {
  371.      case LANGUAGE_ENGLISH :
  372.         language_text_array = &english_language_text_array[0];
  373.         break;
  374.  
  375.      case LANGUAGE_GERMAN :
  376.         language_text_array = build_language_text_array(LANGUAGE_TEXT_FILE,
  377.                              LANGUAGE_TEXT_ENTRIES);
  378.         break;
  379.       }
  380.  
  381.       /* Create and display gadgets */
  382.       if (!language_text_array || !(gl = create_gadgets(ri,
  383.                &test1_gadget_data[0], 0, 0, language_text_array))) {
  384.      keepon3 = FALSE;
  385.       } else {
  386.      struct MsgPort  *up = win->UserPort;
  387.      BOOL keepon2 = TRUE;
  388.  
  389.      set_gadget_attributes(gl, TEST1_GADGET_LANGUAGE, 0L, 0L,
  390.          USE_CURRENT_VALUE, (ULONG)language, (VOID *)USE_CURRENT_VALUE);
  391.      clear_window(ri, win, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0);
  392.      display_gadgets(win, gl);
  393.      do {
  394.         struct IntuiMessage   *msg1, *msg2;
  395.         struct RequesterList  *rl;
  396.  
  397.         WaitPort(up);
  398.         while (msg2 = get_msg(up)) {
  399.            switch (msg2->Class) {
  400.           case CLOSEWINDOW :
  401.              keepon3 = FALSE;
  402.              break;
  403.  
  404.           case ISUP_ID :
  405.              switch (msg2->Code) {
  406.             case TEST1_GADGET_AUTO_REQUEST :
  407.                auto_request(win, TEST1_AUTO_REQ_TITLE,
  408.                            TEST1_AUTO_REQ_BODY_TEXT,
  409.                             TEST1_AUTO_REQ_POS_TEXT,
  410.                         TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
  411.                  TEST1_AUTO_REQ_FLAGS, language_text_array);
  412.                break;
  413.  
  414.             case TEST1_GADGET_REQUESTER :
  415.                if (rl = display_requester(win,
  416.                               &test2_requester_data,
  417.                              language_text_array)) {
  418.                   BOOL keepon1 = TRUE;
  419.  
  420.                   do {
  421.                  WaitPort(up);
  422.                  while (msg1 = get_msg(up)) {
  423.                     if (msg1->Class == ISUP_ID) {
  424.                        keepon1 = FALSE;
  425.                     }
  426.                     reply_msg(msg1);
  427.                  }
  428.                   } while (keepon1 == TRUE);
  429.                   remove_requester(rl);
  430.                }
  431.                break;
  432.  
  433.             case TEST1_GADGET_LANGUAGE :
  434.                new_language = (USHORT)(LONG)msg2->IAddress;
  435.                keepon2      = FALSE;
  436.                break;
  437.              }
  438.              break;
  439.            }
  440.            reply_msg(msg2);
  441.         }
  442.      } while (keepon2 == TRUE && keepon3 == TRUE);
  443.      remove_gadgets(gl);
  444.      free_gadgets(gl);
  445.       }
  446.  
  447.       /* Free language text array */
  448.       if (language_text_array && language == LANGUAGE_GERMAN) {
  449.      free_language_text_array(language_text_array);
  450.       }
  451.       language = new_language;
  452.    } while (keepon3 == TRUE);
  453. }
  454.